package com.xueyi.workflow.service;

import org.flowable.task.service.delegate.DelegateTask;

import java.util.Set;

/**
 * 工作流实例服务接口
 * 处理流程实例相关信息，如发起人、部门等
 *
 * @author xueyi
 * @date 2024-07-03
 */
public interface IWorkflowInstanceService {

    /**
     * 获取流程发起人用户ID
     *
     * @param delegateTask 任务委托对象
     * @return 发起人用户ID
     */
    Long getStarterUserId(DelegateTask delegateTask);

    /**
     * 获取发起人部门ID
     *
     * @param delegateTask 任务委托对象
     * @return 发起人部门ID
     */
    Long getStarterDeptId(DelegateTask delegateTask);

    /**
     * 获取发起人上级部门ID
     *
     * @param delegateTask 任务委托对象
     * @return 发起人上级部门ID
     */
    Long getStarterParentDeptId(DelegateTask delegateTask);

    /**
     * 获取部门负责人用户ID集合
     *
     * @param deptId 部门ID
     * @return 部门负责人用户ID集合
     */
    Set<Long> getDeptLeaderUserIds(Long deptId);

    /**
     * 获取部门所有用户ID集合
     *
     * @param deptId 部门ID
     * @return 部门用户ID集合
     */
    Set<Long> getDeptUserIds(Long deptId);
} 